node js [Node JS] socket.io / jwt authentication / 채팅 회원정보 가져오기 기존에 MongoDB를 이용해 회원가입후 로그인을 하면 회원정보를 바탕으로한 채팅 구현. user의 메시지 라고 상단에 나타남 유저 아이디가 다른 클라이언트에게 나타남 ▼전체 코드▼ ▼server.js▼ ▼chat.ejs▼ ▼chat.html▼ 위의 홈 화면에서 Node JS: Messenger로 들어가면 로그인 되어있는 아이디를 기반으로 웹 채팅을 구현했다. 로그인은 저번에 만든 Mongo... node jsJWTauthenticationsocket.ioJWT [Node JS] 자동완성 구현 • 클라이언트 측에서 검색박스에 키보드 타이핑을 할때마다 텍스트값이 ajax통신을 이용해 서버로 GET요청을 타고 들어간다. 서버에서 파이썬 함수 호출 • 서버의 해당 미들웨어에선 미리 만들어둔 파이썬 스크립트가 인자로 전달받은 텍스트값과 sqlite로 만들어둔 DB와 비교해 일치하는지 확인 후 일치하는 값 모두를 리턴해준다. • 파이썬 리턴이 완료되면 미들웨어에서 마지막으로 전달받은 리턴값... ajaxexpresskeystrokepre-populatenode jsajax [Node JS] 웹 채팅 / socket.io 구현 Node JS와 socket.io를 이용해 웹 채팅을 구현했다. 서버에서 나머지 클라이언트1을 제외한 나머지 클라이언트에 채팅 내용을 보내준다. ▼chat.html▼ http://localhost:8080/chat경로에서 웹 채팅을 구현했다. 채팅 화면은 아래와 같다. npm을 통해서 socket.io모듈을 설치해준다. 그 후 express와 socket.io를 이용해 기본적인 서버를 만들어... node jssocket.ionode js [Node JS] express tutorial / 시작하기 • Node JS Node JS란 JavaScript의 runtime으로 자바스크립트가 돌아가는 환경을 말하며 웹 브라우저 외의 영역인 서버측에서 자바스크립트 언어를 사용 할 수 있게 해준다. • V8 여기서 크롬 브라우저의 V8 엔진이 Node JS에 들어가있고, 엔진의 역할은 자바스크립트 언어를 기계어로 해석하는 역할을 한다. • express Node JS의 express라는 frame... expressnode jsexpress [Node JS] 로그인 회원가입 로그아웃 구현 #2 / 회원가입 / hash / schema / bcrypt bcrypt와 mongoose를 사용해 비밀번호를 암호화 하고 MongoDB에 유저 정보 저장. ▼회원가입을 위한 server.js 전체 코드▼ login.html파일을 만든 후 위의 폼을 만들기 위해 아래의 코드를 작성했다. submit버튼을 누르면 SignUpAjax()함수가 그리고 Log in버튼을 누르면 signInAjax()함수가 실행되며 해당 미들웨어로 데이터가 전송된다. 함수가 ... bcryptexpressschemasign-upnode jsmongoosehashbcrypt [Node JS] nodemon tool 사용 Node JS를 사용하다 보면 서버를 돌려놓고 코드를 수정하고 수정된 코드가 잘 돌아가나 확인하려면 실행중인 서버를 종료하고 다시 node [your node app]명령어를 일일이 쳐야하는 경우가 많을것이다. 이때 nodemon을 사용하면 편하다. 기존에는 이런식으로 아래와 같이 명령어를 입력해 서버를 시작했다면, 우선 npm을 이용해 nodemon을 설치해준다. 그리고 node대신 nod... nodemonnode jsnpmnode js [Node JS] 로그인 회원가입 로그아웃 구현 #4 / 로그아웃 / 쿠키 토큰 삭제 JWT를 이용한 로그인까지 구현이 되었다면 로그아웃은 쉽게 구현할 수 있다. 쿠키를 삭제해 주면 브라우저에 토큰이 사라지므로 더이상 서버에서 유저를 확인할 방법이 없어진다. 로그인이 된 경우는 ejs파일에서만 다루므로 ejs파일에 아래처럼 로그아웃 버튼을 만든다. onclick으로 signOut()함수를 실행하게 만들어준다. 함수의 내용은 아래와 같다. 별거 없이 그냥 해당 미들웨어를 호출한... JWTajaxnode jscookiesJWT [Node JS] #5.3 CRUD (1) Method=”POST”일 때 데이터를 URL로 전송 Form 태그에서는 action=””의 URL로 form의 정보를 전송 없을 경우, 페이지의 URL로 전송 라우터에서 URL에서 post 관리를 해주어야 받기 가능 Upload.pug controller.js Schema에 맞춰 form에서 받은 데이터를 이용하여 document 작성 Id는 mongoose가 자동으로 부여 Controll... node jsnode js TDD(test driven development) 저는 코드로부터 예상 혹은 기대되는 내용을 테스트코드에 규약처럼 작성하여 개발코드를 작성하는 과정이 규약에 어긋나지 않도록 함과 동시에 각 라우터 마다의 api 호출을 통한 테스트 과정을 생략하기 위해 사용하는 것으로 받아들였습니다. 이 때 검사를 위해 사용되는 모듈이 크게 두 가지, assert 와 should가 있습니다. 테스트 코드 작성에서는 웬만하면 should를 사용하는 것이 좋다고... TDDnode jsTDD [Node JS] # File Upload Html multer 적용 Middleware 정의 - router에서 middleware 사용: html에서 받아온 file을 middleware에서 정한 설정에 따라 uploads 폴더에 저장한 후 다음 middleware로 file 정보를 전달 (req.file 이용) DB 및 세션에 저장 Static files serving (img 파일 등을 브라우저에 노출) ++) 문제 – 서버에... node jsnode js [Node JS] #5.2 Database model을 만드는 이유 mongoose에게 data가 어떻게 생겼는지 전달해야함. mongoose는 그 틀을 바탕으로 object의 틀을 강제함. model은 object의 model이 됨. shape는 보통 스키마라고 부름. 사용법: 스키마 정의 - mongoose.model 정의, export-import, CRUD = create, read, update, delete 데이터를 생성하... node jsnode js [Node JS] # Log in 중복되는 이메일이나 아이디 등의 에러 해결 Unique로 설정할 필드에서 중복되는 문제 발생 시 DB에서 에러 발생 구현 유효성 검사 후, 중복이나 잘못된 경우로 가입을 해도 크롬은 정상적 작동으로 인식 Status code 때문인데, 별다른 요청이 없으면 node는 status code 200을 전달 (OK code) 여러가지 status code 참조 구현 res.status(400).r... node jsnode js [Node JS] #5.3 CRUD(2) When can’t find object, Use error 404 Implement Control get URL It is not different with GET Upload URL Implement Get form data from req.body; Save data into object Implement It is provided by mongoose with model. Need 2... node jsnode js
[Node JS] socket.io / jwt authentication / 채팅 회원정보 가져오기 기존에 MongoDB를 이용해 회원가입후 로그인을 하면 회원정보를 바탕으로한 채팅 구현. user의 메시지 라고 상단에 나타남 유저 아이디가 다른 클라이언트에게 나타남 ▼전체 코드▼ ▼server.js▼ ▼chat.ejs▼ ▼chat.html▼ 위의 홈 화면에서 Node JS: Messenger로 들어가면 로그인 되어있는 아이디를 기반으로 웹 채팅을 구현했다. 로그인은 저번에 만든 Mongo... node jsJWTauthenticationsocket.ioJWT [Node JS] 자동완성 구현 • 클라이언트 측에서 검색박스에 키보드 타이핑을 할때마다 텍스트값이 ajax통신을 이용해 서버로 GET요청을 타고 들어간다. 서버에서 파이썬 함수 호출 • 서버의 해당 미들웨어에선 미리 만들어둔 파이썬 스크립트가 인자로 전달받은 텍스트값과 sqlite로 만들어둔 DB와 비교해 일치하는지 확인 후 일치하는 값 모두를 리턴해준다. • 파이썬 리턴이 완료되면 미들웨어에서 마지막으로 전달받은 리턴값... ajaxexpresskeystrokepre-populatenode jsajax [Node JS] 웹 채팅 / socket.io 구현 Node JS와 socket.io를 이용해 웹 채팅을 구현했다. 서버에서 나머지 클라이언트1을 제외한 나머지 클라이언트에 채팅 내용을 보내준다. ▼chat.html▼ http://localhost:8080/chat경로에서 웹 채팅을 구현했다. 채팅 화면은 아래와 같다. npm을 통해서 socket.io모듈을 설치해준다. 그 후 express와 socket.io를 이용해 기본적인 서버를 만들어... node jssocket.ionode js [Node JS] express tutorial / 시작하기 • Node JS Node JS란 JavaScript의 runtime으로 자바스크립트가 돌아가는 환경을 말하며 웹 브라우저 외의 영역인 서버측에서 자바스크립트 언어를 사용 할 수 있게 해준다. • V8 여기서 크롬 브라우저의 V8 엔진이 Node JS에 들어가있고, 엔진의 역할은 자바스크립트 언어를 기계어로 해석하는 역할을 한다. • express Node JS의 express라는 frame... expressnode jsexpress [Node JS] 로그인 회원가입 로그아웃 구현 #2 / 회원가입 / hash / schema / bcrypt bcrypt와 mongoose를 사용해 비밀번호를 암호화 하고 MongoDB에 유저 정보 저장. ▼회원가입을 위한 server.js 전체 코드▼ login.html파일을 만든 후 위의 폼을 만들기 위해 아래의 코드를 작성했다. submit버튼을 누르면 SignUpAjax()함수가 그리고 Log in버튼을 누르면 signInAjax()함수가 실행되며 해당 미들웨어로 데이터가 전송된다. 함수가 ... bcryptexpressschemasign-upnode jsmongoosehashbcrypt [Node JS] nodemon tool 사용 Node JS를 사용하다 보면 서버를 돌려놓고 코드를 수정하고 수정된 코드가 잘 돌아가나 확인하려면 실행중인 서버를 종료하고 다시 node [your node app]명령어를 일일이 쳐야하는 경우가 많을것이다. 이때 nodemon을 사용하면 편하다. 기존에는 이런식으로 아래와 같이 명령어를 입력해 서버를 시작했다면, 우선 npm을 이용해 nodemon을 설치해준다. 그리고 node대신 nod... nodemonnode jsnpmnode js [Node JS] 로그인 회원가입 로그아웃 구현 #4 / 로그아웃 / 쿠키 토큰 삭제 JWT를 이용한 로그인까지 구현이 되었다면 로그아웃은 쉽게 구현할 수 있다. 쿠키를 삭제해 주면 브라우저에 토큰이 사라지므로 더이상 서버에서 유저를 확인할 방법이 없어진다. 로그인이 된 경우는 ejs파일에서만 다루므로 ejs파일에 아래처럼 로그아웃 버튼을 만든다. onclick으로 signOut()함수를 실행하게 만들어준다. 함수의 내용은 아래와 같다. 별거 없이 그냥 해당 미들웨어를 호출한... JWTajaxnode jscookiesJWT [Node JS] #5.3 CRUD (1) Method=”POST”일 때 데이터를 URL로 전송 Form 태그에서는 action=””의 URL로 form의 정보를 전송 없을 경우, 페이지의 URL로 전송 라우터에서 URL에서 post 관리를 해주어야 받기 가능 Upload.pug controller.js Schema에 맞춰 form에서 받은 데이터를 이용하여 document 작성 Id는 mongoose가 자동으로 부여 Controll... node jsnode js TDD(test driven development) 저는 코드로부터 예상 혹은 기대되는 내용을 테스트코드에 규약처럼 작성하여 개발코드를 작성하는 과정이 규약에 어긋나지 않도록 함과 동시에 각 라우터 마다의 api 호출을 통한 테스트 과정을 생략하기 위해 사용하는 것으로 받아들였습니다. 이 때 검사를 위해 사용되는 모듈이 크게 두 가지, assert 와 should가 있습니다. 테스트 코드 작성에서는 웬만하면 should를 사용하는 것이 좋다고... TDDnode jsTDD [Node JS] # File Upload Html multer 적용 Middleware 정의 - router에서 middleware 사용: html에서 받아온 file을 middleware에서 정한 설정에 따라 uploads 폴더에 저장한 후 다음 middleware로 file 정보를 전달 (req.file 이용) DB 및 세션에 저장 Static files serving (img 파일 등을 브라우저에 노출) ++) 문제 – 서버에... node jsnode js [Node JS] #5.2 Database model을 만드는 이유 mongoose에게 data가 어떻게 생겼는지 전달해야함. mongoose는 그 틀을 바탕으로 object의 틀을 강제함. model은 object의 model이 됨. shape는 보통 스키마라고 부름. 사용법: 스키마 정의 - mongoose.model 정의, export-import, CRUD = create, read, update, delete 데이터를 생성하... node jsnode js [Node JS] # Log in 중복되는 이메일이나 아이디 등의 에러 해결 Unique로 설정할 필드에서 중복되는 문제 발생 시 DB에서 에러 발생 구현 유효성 검사 후, 중복이나 잘못된 경우로 가입을 해도 크롬은 정상적 작동으로 인식 Status code 때문인데, 별다른 요청이 없으면 node는 status code 200을 전달 (OK code) 여러가지 status code 참조 구현 res.status(400).r... node jsnode js [Node JS] #5.3 CRUD(2) When can’t find object, Use error 404 Implement Control get URL It is not different with GET Upload URL Implement Get form data from req.body; Save data into object Implement It is provided by mongoose with model. Need 2... node jsnode js